import { createI18n } from "vue-i18n";
import en from "./lang/en.js";
import zh from "./lang/zh-CN.js";

let messages = {
  "en-US": en,
  "zh-CN": zh,
};

export const langMap = {
  "en-US": "English",
  "zh-CN": "中文",
};

export let defaultLang =
  localStorage.getItem("local-lang") || navigator.language || "zh-CN";

let i18n = createI18n({
  locale: defaultLang, // 设置默认语言
  messages,
  fallbackLocale: "zh-CN", // 没有英文的时候默认中文语言
  legacy: false, //处理报错Uncaught (in promise) SyntaxError: Not available in legacy mode (at message-compiler.esm-bundler.js:54:19)
  sync: true,
  silentTranslationWarn: true, // 去掉警告
  missingWarn: false,
  silentFallbackWarn: true, //抑制警告 设置为true后，在组件内使用时在浏览器不会报警告
  globalInjection: true, // 全局注入 $t 函数
});

export function setLanguage(lang) {
  lang = lang || "zh-CN";
  localStorage.setItem("local-lang", lang);
  i18n.global.locale.value = lang;
  window.location.reload();
}

function setEleLang(lang) {
  document.querySelector("body")?.setAttribute("lang", lang);
}

//给顶层元素设置语言属性 方便处理样式
setEleLang(defaultLang);

export default i18n;
